<p>Даже если во время разработки веб-проекта постоянно думать об оптимизации и производительности и следить за тем, что:</p>

<ul>
<li>компоненты не выполняют в режиме автокеширования запросы к базе данных;</li>
<li>в кеше компонентов не сохраняются лишние данные и объем кеша не превышает 1МБ;</li>
<li>в теле компонентов не выполняются интенсивные вычисления и не практикуется интенсивное использование больших объемов оперативной памяти (подобные операции не должны выполнятся в момент построения страницы для передачи в бразуер Посетителя; рекомендуется их выносить в периодические cron-операции, выполняемые в фоновом режиме или по технологии асинхронных очередей)</li>
 </ul>

<p>То все равно остается риск "просачивания" медленных веб-страниц и компонентов в проект - из-за ошибки программиста, наложения внутренних технических сценариев выполнения веб-страницы, которые сложно спроектировать и предусмотреть заранее, непредвиденных эффектов совместной работы серверного программного обеспечения и т.п.</p>

<p>Для максимальной защиты веб-проекта от нестабильной работы при увеличении нагрузки, повышения запаса производительности, проверки устойчивости системы - настоятельно рекомендуется провести нагрузочное тестирование веб-проекта. </p>

<p>Для получения близких к реальным условиям эксплуатации результатов, желательно загрузить в веб-проект ожидаемый объем тестовых данных. Например, если в системе ожидается 2 миллиона учетных записей, 100 000 товаров в 10 000 разделах и форум, хранящий миллион сообщений с посещаемостью 500 000 хитов в сутки - необходимо импортировать в веб-проект тестовые данные в данном объеме. Также, что очевидно, следует проводить нагрузочные испытания на серверном оборудовании идентичном или максимально приближенном к реальному.</p>

<p>Сценарии нагрузочного тестирования различаются по степени сложности и варьируются от кратковременного коллективного тестирования веб-проекта сотрудниками компании ("коллеги, сегодня с 16 до 16:10, пожалуйста, походите по сайту, выполняя следующие действия …") до комплексных имитаций пользовательских цепочек на сайте с использованием таких инструментов, как JMeter, WAPT и т.п.  Вот <a href="http://www.1c-bitrix.ru/download/files/manuals/ru/bitrix_tests.pdf" target="_blank">пример методики</a> организации и проведения нагрузочного тестирования. В "крайнем" случае, при недостатке времени, можно провести "экспресс" нагрузочное тестирование после запуска веб-проекта в эксплуатацию и оперативно исправить возникшие недостатки.</p>



<ol>
<li>Убеждаемся, что веб-проект заполнен тестовыми данными в объеме, приближенном к реальным условиям эксплуатации и тестирование проводится на аппаратной конфигурации ,приближенной к реальной.</li>
<li>На административной странице в разделе "Настройки > Производительность > Панель производительности" нажимаем "Тестировать производительность" в течение 10 минут (или более,  для получения более качественных результатов).
<ol>
<li>Создается нагрузка на веб-решение: или по сайту ходят сотрудники компании, выполняя заранее описанные действия, или хотят реальные пользователи, или нагрузку создает инструмент типа JMeter, WAPT и т.п. Желательно, чтобы уровень нагрузки и ее характер был приближен к реальному. Например, если ожидается миллион хитов в сутки, нужно постараться создать данную нагрузку.</li>
<li>Во время нагрузки на веб-проект необходимо самостоятельно пройти по нескольким цепочкам и визуально оценить следующее:
<ul>
<li>страницы веб-проекта открываются быстро, не зависают</li>
<li>изображения веб-страницы загружаются визуально быстро.</li>
Фактически, просматривая в браузере веб-проект, находящийся под нагрузкой, вы смотрим на него и оцениваем производительность "глазами клиента".
 </ul>
</li>
 </ol>

</li>
<li>После завершения нагрузочного теста анализируем результаты на вкладке "Разработка" (Настройки > Производительность > Панель производительности):
<ul>
<li>Просматриваем список "20 самых нагружающих страниц".</li>
<li>Результаты в колонке "Среднее время (сек)", отображающие время построения страницы на сервере, не должны превышать 0.5 сек. Результаты в 1 и более секунды говорят либо о недостаточно оптимизированной веб-странице/конфигурации PHP, либо о недостаточной производительности аппаратной конфигурации - в общем, требуют вмешательства и исправления.</li>
<li>В колонке "Ошибки разработки" не должно быть сообщений об ошибках. Найденные ошибки требуют исправления.</li>
 </ul>

</li>
 </ol>

<p>В результате успешного прохождения данного теста наиболее посещаемые страницы веб-проекта будут оптимизированы, что значительно улучшит устойчивость системы  и снизит нагрузку на аппаратную конфигурацию. </p>
